package com.bookmall.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bookmall.common.utils.PageUtils;
import com.bookmall.product.domain.BookInfo;
import com.bookmall.product.domain.vo.BookInfoVo;
import com.bookmall.product.domain.vo.BookWareInfoVo;
import com.bookmall.product.domain.vo.LockStockResult;
import com.bookmall.product.domain.vo.WareBookLockVo;

import java.util.List;
import java.util.concurrent.ExecutionException;


/**
 * @Description:
 * @Author 胡菜鸡
 * @Create 2022-02-18-15:30
 */
public interface IBookInfoService extends IService<BookInfo> {

    /**
     * 根据对象内非空的属性进行分页查询列表
     * @author 胡菜鸡
     * @date 2022/2/19 16:48
     */
    PageUtils selectBookInfoList(BookInfoVo bookInfoVo);

    /**
     * 根据id查询书籍信息
     * @author 胡菜鸡
     * @date 2022/2/20 18:19
     */
    BookInfoVo selectBookInfoById(String id);

    /**
     * 修改书籍上架信息
     * @author 胡菜鸡
     * @date 2022/2/20 17:11
     */
    int updateBookStatus(BookInfo bookInfo);

    /**
     * 书籍上架
     * @author 胡菜鸡
     * @date 2022/4/8 14:32
     */
    int up(String id, int status);

    /**
     * 下架书籍
     * @author 胡菜鸡
     * @date 2022/4/29 17:43
     */
    int down(String id, int status);

    /**
     * 新增书籍
     * @author 胡菜鸡
     * @date 2022/2/20 17:51
     */
    boolean insertBookInfo(BookInfoVo bookInfoVo);

    /**
     * 修改书籍信息
     * @author 胡菜鸡
     * @date 2022/2/20 18:53
     */
    boolean updateBookInfo(BookInfoVo bookInfoVo);

    /**
     * 删除书籍信息
     * @author 胡菜鸡
     * @date 2022/2/20 18:57
     */
    int deleteBookInfoByIds(List<String> ids);

    /**
     * 查询最新上架的书籍
     * @author 胡菜鸡
     * @date 2022/3/21 21:05
     */
    List<BookInfoVo> selectLatestBookInfoList();

    /**
     * 查询打折力度最高的书籍
     * @author 胡菜鸡
     * @date 2022/3/31 13:45
     * @param
     * @return
     */
    List<BookInfoVo> selectSpecialPriceBookList();

    /**
     * 查询最便宜的书籍
     * @author 胡菜鸡
     * @date 2022/4/20 14:34
     */
    List<BookInfoVo> selectMinPriceBook();

    /**
     * 查出新旧程度最高的书籍
     * @author 胡菜鸡
     * @date 2022/4/20 16:05
     */
    List<BookInfoVo> selectMaxLevelBook();

    /**
     * 为某个订单锁定库存
     * @author 胡菜鸡
     * @date 2022/4/25 9:15
     */
    Boolean orderLockStock(WareBookLockVo wareBookLockVo);

    /**
     * 根据id批量回调书籍库存信息
     * @author 胡菜鸡
     * @date 2022/4/26 14:56
     */
    int updateBookLockCountBatchById(List<BookWareInfoVo> bookWareInfoVo);

    /**
     * 添加商品到喜欢
     * @author 胡菜鸡
     * @date 2022/5/3 19:22
     */
    Boolean addToLikes(String bookId);
}
